<?php
/**
 * 
 * 
 * @author Algenis Volquez
 *
 */
class GVentas24h extends Controller
{
	const SERVICIO_EXPRESS = 1;
	private $_colores; 
	private $_totalVerdes = 0;
	private	$_totalAmarillos = 0;
	private	$_totalRojos = 0;
	private $_porcentajeEstatus = array();
	
	public function __construct()
	{
		
		parent::Controller();
		$this->load->library('chcalendario');
		$this->load->model(array('mcompania', 'mprocesos','mservicios', 'usuarios', 'mresponsable',
								 'mestatus', 'metapas', 'mmodeloetapas', 'mmodeloservicios'));
		
		$this->_colores = array('Verde', 'Amarillo', 'Rojo');
	}
	
	public function index()
	{
		
		$this->load->view('main', array('content_page'    			=>'gventas24h_view',
	        							'menutop'         			=> 8,
										'colores_array'		  		=> $this->_colores,
										'porcentajeEstatusExpress'	=> $this->getPorcentajeEstatus()));
	}
	
/**
	 * 
	 * getData:
	 * CARGA UN LISTADO DE TODAS LAS COMPANIAS QUE EXPRESS
	 */
	public function getData($id = false)
	{	
		$page = $this->input->post('page') ? $this->input->post('page') : 1;
		$sortname = $this->input->post('sidx') ? $this->input->post('sidx') : 'IdCompania';
		$sortorder = $this->input->post('sord') ? $this->input->post('sord') : 'DESC';
		$limit = $this->input->post('rows') ? $this->input->post('rows') : 25;
		$start = $limit * $page - $limit;
		if($start < 0) $start = 0;
		
		$color = false;
			
		
		header("Expires: Mon, 26 Jul 1997 05:00:00 GMT" );
	    header("Last-Modified: " . gmdate( "D, d M Y H:i:s" ) . "GMT" );
	    header("Cache-Control: no-cache, must-revalidate" );
	    header("Pragma: no-cache" );
	     $where = array('IdServicio' => self::SERVICIO_EXPRESS);
		if (strlen($id) > 0) {
			$color = $id;
			$records = $this->mcompania->loadCompaniasWhere($where, $start, false, $sortname, $sortorder);		
		}else{
			$records = $this->mcompania->loadCompaniasWhere($where, $start, $limit, $sortname, $sortorder);
		}
		$totalRecords = count($this->mcompania->loadCompaniasWhere($where, false, false, false, false));
		
		$totalPages = ceil($totalRecords/$limit);
		     if ($page > $totalPages) 
		       $page = $totalPages;

	    $json_output = array(
            'page'		=> $page,
            'total'		=> $totalPages,
            'records'	=> $totalRecords,
            'rows'		=> array()
	    );
	    
	 	if($records != false){
		     foreach($records as $objeto){
		    
		     $servicios = $this->mservicios->LoadServicioById($objeto->getIdServicio());
		     $usuario = $this->usuarios->LoadUsuarioById($objeto->getIdUsuario());
		     $responsable=$this->mresponsable->LoadEstatusById($objeto->getIdResponsable());
		     
		     $proceso = $this->mprocesos->loadLastProceso($objeto->getIdCompania());	 
		     $procesoFecha = $this->mprocesos->loadProcesosByArray(array('IdCompania' => $objeto->getIdCompania()));
		    
			 $procesoFecha = array_reverse($procesoFecha);
			
		     $procesoDgii = $this->mprocesos->loadProcesoById($proceso);
		     
			 $procesos 	= $this->mprocesos->loadProcesoById(intval($proceso));
			 $estatus 	= $this->mestatus->LoadEstatusById($procesos->getIdEstatus());
			 $etapa 	= $this->metapas->LoadEtapaById($objeto->getIdUltimaEtapa());
			 		
			 if ($objeto->getIdServicio() == 7 && $procesoDgii->getIdEtapa() == 3) {
				continue;
			 }
			 
			 foreach ($procesoFecha as $k){
			 	  if ($procesoDgii->getIdEtapa() == $k->getIdEtapa()){
			 	     	$fechaProcesoScuenci = $k->getFechaSys();  
			 	     	
			 	  }else{
			 	  	
			 	  	 break;
			 	  }         
			 }
			 $ultimatransaccion = $this->chcalendario->calcularDias($fechaProcesoScuenci);
			 
		     $colores_array_etapa = $this->mmodeloetapas->loadModeloEtapas();
			 $colores_etapa=$colores_array_etapa[0];
			 
			 $bruto_etapa = ($ultimatransaccion/$etapa->GetTiempoEstimado())*100;
			 $dias =  $this->chcalendario->calcularDias($objeto->getFechaUsrCompania());
			 $porciento_bruto = ($dias/$servicios->getTiempoServicio())*100;

			 if ($bruto_etapa >= $colores_etapa->getVerdeModelo() and $bruto_etapa < $colores_etapa->getAmarilloModelo() or $bruto_etapa==0 or $bruto_etapa<0){
			 	  if($color == "Amarillo" || $color == "Rojo"){
				  	continue;
				  }
			 	$imagen_etapa = "<img src='http://company24h.com/c24h/public/images/1.png'/>";
				 
			 }elseif($bruto_etapa>=$colores_etapa->getAmarilloModelo() and $bruto_etapa<$colores_etapa->getRojoModelo()){
				
			 	if($color == "Verde" || $color == "Rojo"){
				  	continue;
				  }
			 	$imagen_etapa="<img src='http://company24h.com/c24h/public/images/2.png'/>";
			  
			 }else{
			 	
				 if($color == "Verde" || $color == "Amarillo"){
				  	continue;
				  }
				$imagen_etapa="<img src='http://company24h.com/c24h/public/images/3.png'/>";	 
			 }
			 $colores_array_servicio = $this->mmodeloservicios->loadModeloServicios();
			 $colores_servicios = $colores_array_servicio[0];
			
			 if (($porciento_bruto>=$colores_servicios->getVerdeModelo() and $porciento_bruto < $colores_servicios->getAmarilloModelo()) or $porciento_bruto<=0){
				$imagen="<img src='http://company24h.com/c24h/public/images/1.png'/>";
				
			 }elseif ($porciento_bruto >=$colores_servicios->getAmarilloModelo() and $porciento_bruto < $colores_servicios->getRojoModelo()){
				$imagen="<img src='http://company24h.com/c24h/public/images/2.png'/>";
			 }else{
				$imagen="<img src='http://company24h.com/c24h/public/images/3.png'/>";
			 }
			     $arr = $json_output['rows'][] = array(
											          'IdCompania'            => $objeto->getIdCompania(),
											          'NombreCompania'        => '<strong>'.$objeto->getNombreCompania().'</strong>',
											     	  'IdServicio'            => $servicios->getNombreServicio(),
											     	  'cServicio'             => $objeto->getClasificacionS(),
											          'FechaUsrCompania'      => $objeto->getFechaUsrCompania(),
											     	  'FechaSistema'          => $objeto->getFechaSysCompania(),
											     	  'dias'                  => intval($ultimatransaccion),
											     	  'IdEtapa'               => $etapa->GetNombre(),
											     	  'IdEstatus'             => $estatus->getNombre(),
											          'Etapa'                 => $imagen_etapa,
											          'Total'                 => $imagen,
											     	  'User'                  => $usuario->getUsernameUsuario(),
											     	  'Responsable'           => $responsable->getNombre()
										      		);
		      }
		}
		
		$a=json_encode($json_output);
		$a=str_replace('\\','',$a);
		echo $a;
	}
	
	/**
	 * 
	 * RETORNA EL PORCENTAJE DE LOS REGISTROS ENCONTRADOS 
	 * CORRESPONDIENTES A LAS COMPANIAS EXPRESS, DEPENDIENDO
	 * EL TIPO DE ESTATUS 
	 * 
	 * @example ESTATUS (verde, amarillo, rojo)
	 * @return int array
	 */
	public function getPorcentajeEstatus()
	{
		$porcentajeEstatus = array();
		$totalVerdes = 0;
		$totalAmarillos = 0;
		$totalRojos = 0;
		$where = array('IdServicio' => self::SERVICIO_EXPRESS);
		$colores_array_etapa = $this->mmodeloetapas->loadModeloEtapas();
		$colores_etapa = $colores_array_etapa[0];
	    
		$companias = $this->mcompania->loadCompaniasWhere($where, false, false, false, false);
		if (is_array ($companias)) {
			$divisor = count($companias);
			foreach ($companias as $compania){
				 $proceso = $this->mprocesos->loadLastProceso($compania->getIdCompania());
					 
			     $procesoFecha = $this->mprocesos->loadProcesosByArray(array('IdCompania' => $compania->getIdCompania()));
			    
				 $procesoFecha = array_reverse($procesoFecha);
				
			     $procesoDgii = $this->mprocesos->loadProcesoById($proceso);
			     
				 $procesos 	= $this->mprocesos->loadProcesoById(intval($proceso));
				 $estatus 	= $this->mestatus->LoadEstatusById($procesos->getIdEstatus());
				 $etapa 	= $this->metapas->LoadEtapaById($procesos->getIdEtapa());
				 		
				 if ($compania->getIdServicio() == 7 && $procesoDgii->getIdEtapa() == 3) {
					continue;
				 }
				 
				 foreach ($procesoFecha as $k){
				 	  if ($procesoDgii->getIdEtapa() == $k->getIdEtapa()){
				 	     	$fechaProcesoScuenci = $k->getFechaSys();  
				 	  }else{
				 	  	 break;
				 	  }         
				 }
				 $ultimatransaccion = $this->chcalendario->calcularDias($fechaProcesoScuenci);
				 
				 $bruto_etapa = ($ultimatransaccion/$etapa->GetTiempoEstimado())*100;
			
				 if ($bruto_etapa >= $colores_etapa->getVerdeModelo() and $bruto_etapa < $colores_etapa->getAmarilloModelo() or $bruto_etapa==0 or $bruto_etapa<0){
					$totalVerdes ++;
				 }elseif($bruto_etapa>=$colores_etapa->getAmarilloModelo() and $bruto_etapa<$colores_etapa->getRojoModelo()){
					$totalAmarillos ++;
				 }else{
					$totalRojos ++;
				 }
			}
			$porcentajeEstatus['verdes'] = $this->redondear(($totalVerdes/$divisor)*100);
			$porcentajeEstatus['amarillos'] = $this->redondear(($totalAmarillos/$divisor)*100);
			$porcentajeEstatus['rojos'] = $this->redondear(($totalRojos/$divisor)*100);
			$porcentajeEstatus['balanceActual'] = 0;
		 }else{
		 	$porcentajeEstatus['verdes'] = 0;
			$porcentajeEstatus['amarillos'] = 0;
			$porcentajeEstatus['rojos'] = 0;
			$porcentajeEstatus['balanceActual'] = 0;
		 }
		return $porcentajeEstatus;
	}
	
	function redondear($decimal) {
   		$float_redondeado = round($decimal * 100) / 100;
   		return $float_redondeado;
	} 
}